Verilog-A 自定义函数与编译器指令

自定义函数(analog function)

analog function [type] function_name
    input varA;
    real varA;
    // ... 其他输入
    function_name = ...;   // 返回变量 = 函数名
endfunction

⚠️ 函数内禁止:

示例(最大值函数):

analog function real maxvalue
input a, b;
real a, b;
    maxvalue = max(a, b);
endfunction

编译器指令(以反引号 ` 开头)

类似 C 宏,编译阶段工作,不以 ; 结尾。注意区分 ` 与 '。

宏定义

`define macro_name macro_text
`undef macro_name

带参数宏:

`define sum(a,b) ((a)+(b))
// 使用:`sum(p+q) < 5

宏条件判断

`ifdef macro_name
`else
`endif

包含文件

`include "file_name"

timescale

`timescale time_period/time_precision

默认限定类型

`default_discipline discipline qualifier scope

默认上升/下降时间

`default_transition time

重置

`resetall

完整模块骨架(含指令)

`resetall
`timescale 1ns/1ps
`include "constants.vams"
`include "disciplines.vams"

module my_module(p, n);
inout p, n;
electrical p, n;
parameter real r = 100;

analog begin
    V(p,n) <+ r*I(p,n);
end
endmodule

相关笔记